home *** CD-ROM | disk | FTP | other *** search
/ The X-Philes (2nd Revision) / The X-Philes Number 1 (1995).iso / xphiles / hp48hor1 / pbk.src < prev    next >
Text File  |  1991-05-29  |  3KB  |  93 lines

  1. %%HP:T(3);
  2. @ PBK, by Robert Noe
  3. @ Requires DBLIB and TLLIB from Donnelly's ToolKit.
  4. DIR
  5.   phne
  6.     \<<
  7.       IF PHDAT 1 GET SIZE NOT
  8.       THEN inp DROP
  9.       END 3 1 view
  10.     \>>
  11.   view
  12.     \<< \-> n p
  13.       \<< { } 'PHDAT' n GET { "SORT" } { "ADDR" "PHNE" "NAME" "ADD" "DEL" "QUIT"
  14.  } DUP n GET 1 \->LIST SDIFF + { 1 } p + p + 1 + { "Addresses" "Numbers"
  15. "Names" } n GET + DBR 4 ROLL PHDAT SWAP n SWAP PUT 'PHDAT' STO 3 ROLL DROP
  16.         CASE DUP 1 ==
  17.           THEN DROP { 2 3 1 } n GET aview
  18.           END DUP 1 NEG ==
  19.           THEN DROP 'p' STO n sort n p view
  20.           END DUP 2 NEG ==
  21.           THEN DROP { 2 1 1 } n GET SWAP view
  22.           END DUP 3 NEG ==
  23.           THEN DROP { 3 3 2 } n GET SWAP view
  24.           END DUP 4 NEG ==
  25.           THEN DROP DROP inp n SWAP view
  26.           END DUP 5 NEG ==
  27.           THEN DROP del n 1 view
  28.           END DUP 0 == SWAP 6 NEG == OR
  29.           THEN DROP
  30.           END
  31.         END
  32.       \>>
  33.     \>>
  34.   aview
  35.     \<< \-> n p
  36.       \<< { "Name: " "Addr: " "  Ph: " } PHDAT OBJ\-> n EXTRACT ROLLD 3 \->LIST
  37. { "LIST" "NEXT" "PREV" "ADD" "DEL" "QUIT" } { 1 1 } p + { 1 "Detail" } + DBR
  38. 3 ROLL DROP 3 ROLL n recsto
  39.         CASE DUP ABS 1 ==
  40.           THEN DROP { 3 1 2 } SWAP GET n view
  41.           END DUP 2 NEG ==
  42.           THEN DROP n 1 +
  43.             IF DUP PHDAT 1 GET SIZE >
  44.             THEN DROP 1
  45.             END SWAP aview
  46.           END DUP 3 NEG ==
  47.           THEN DROP n 1 -
  48.             IF DUP 0 ==
  49.             THEN DROP PHDAT 1 GET SIZE
  50.             END SWAP aview
  51.           END DUP 4 NEG ==
  52.           THEN DROP DROP inp 1 aview
  53.           END DUP 5 NEG ==
  54.           THEN DROP DROP n del 1 1 aview
  55.           END DUP 6 NEG == 2 PICK 0 == OR
  56.           THEN DROP DROP
  57.           END
  58.         END
  59.       \>>
  60.     \>>
  61.   sort
  62.     \<< PHDAT 1 GET SIZE \-> p n
  63.       \<< 1 n
  64.         FOR l PHDAT OBJ\-> l EXTRACT \->LIST
  65.         NEXT n p LSORT DUP 1 + DUPN 1 EXTRACT \->LIST 1 MSWAP DUP 1 + DUPN 2
  66. EXTRACT \->LIST 1 MSWAP 3 EXTRACT \->LIST 1 MM\->L + SWAP DROP SWAP 1 \->LIST
  67. SW AP + 'PHDAT' STO
  68.       \>>
  69.     \>>
  70.   del
  71.     \<< \-> n
  72.       \<< 1 3
  73.         FOR l PHDAT l GET DUP 1 n 1 - SUB SWAP DUP SIZE n 1 + SWAP SUB +
  74.         NEXT 3 \->LIST 'PHDAT' STO
  75.       \>>
  76.     \>>
  77.   recsto
  78.     \<< \-> rec n
  79.       \<< PHDAT 1 GET n rec 2 GET PUT PHDAT 2 GET n rec 3 GET PUT PHDAT 3 GET n
  80. rec 1 GET PUT 3 \->LIST 'PHDAT' STO
  81.       \>>
  82.     \>>
  83.   inp
  84.     \<< "Enter name:" { "" 1 \Ga } INPUT PHDAT 3 GET SWAP + "Enter address:" { "
  85. " 1 \Ga } INPUT PHDAT 1 GET SWAP + "Enter phone numb:" { "" 1 \Ga } INPUT PHDAT
  86. 2 GET
  87. SWAP + 3 ROLL 3 \->LIST 'PHDAT' STO PHDAT 1 GET SIZE
  88.     \>>
  89.   CST { phne }
  90.   PHDAT { { } { } { } }
  91. END
  92.  
  93.